package dao;
import com.mysql.jdbc.PreparedStatement;
import java.sql.Connection;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
import java.sql.Statement;  
import java.util.Vector;  
import javax.swing.JOptionPane;  
import modelo.dominio.Endereco;
import java.io.*;

import dao.banco.ConFactory;  
  
public class DaoEndereco {  
   
   private final String URL = "jdbc:mysql://localhost/bd_locarrao",  
         NOME = "root", SENHA = "locarrao2";  
  
   private Connection con;  
   private Statement comando;  
  
   public void apagar(String cpf) {  
      conectar();  
      try {  
         comando  
               .executeUpdate("DELETE FROM pessoa WHERE cpf = '" + cpf  
                     + "';");  
      } catch (SQLException e) {  
         imprimeErro("Erro ao apagar pessoas", e.getMessage());  
      } finally {  
         fechar();  
      }  
   }  
  /**
    * busca por todos endereços.
    * @return vetor de todos os endereços.
    */
   public Vector<Endereco> buscarTodos() {  
      conectar();  
      Vector<Endereco> resultados = new Vector<Endereco>();  
      ResultSet rs;  
      try {  
         rs = comando.executeQuery("SELECT * FROM pessoa");  
         while (rs.next()) {  
            Endereco temp = new Endereco();  
            // pega todos os atributos da pessoa
            /*
            temp.setCpf(rs.getString("cpf"));  
            temp.setNome(rs.getString("nome"));  
            temp.setTelefone(rs.getString("telefone"));  
            resultados.add(temp);  
             * 
             */
         }  
         return resultados;  
      } catch (SQLException e) {  
         imprimeErro("Erro ao buscar pessoas", e.getMessage());  
         return null;  
      }  
   }  
  /*
   public void atualizar(Endereco endereco) {  
      conectar();  
      String com = "UPDATE pessoa SET nome = '" + endereco.getNome()  
            + "', telefone ='" + pessoa.getTelefone()  
            + "' WHERE  rg = '" + pessoa.getCpf() + "';";  
      System.out.println("Atualizada!");  
      try {  
         comando.executeUpdate(com);  
      } catch (SQLException e) {  
         e.printStackTrace();  
      } finally {  
         fechar();  
      }  
   }  
    * 
    */
  /*
   public Vector<Pessoa> buscar(String cpf) {  
      conectar();  
      Vector<Pessoa> resultados = new Vector<Pessoa>();  
      ResultSet rs;  
      try {  
         rs = comando.executeQuery("SELECT * FROM pessoa WHERE cpf LIKE '"  
               + cpf + "%';");  
         while (rs.next()) {  
            Pessoa temp = new Pessoa();  
            // pega todos os atributos da pessoa  
            temp.setCpf(rs.getString("cpf"));  
            temp.setNome(rs.getString("nome"));  
            temp.setTelefone(rs.getString("telefone"));  
            resultados.add(temp);  
         }  
         return resultados;  
      } catch (SQLException e) {  
         imprimeErro("Erro ao buscar pessoa", e.getMessage());  
         return null;  
      }  
  
   }  
    * 
    */
  
   /**
    * Método que pega o codigo do ultimo resgitro inserido no banco de dados.
    * @return id do codigo.
    */
   public int retornaCodUltimoRegistro(){
       conectar();
       int resultado=0;
       ResultSet rs;
       try {
           
       rs = comando.executeQuery("SELECT Max(cod_endereco) FROM bd_locarrao.tb_endereco;"); 
       while(rs.next() ){
             resultado = rs.getInt("Max(cod_endereco)");
       }
       return(resultado);
       } catch (SQLException e) {  
         imprimeErro("Erro ao buscar cod_endereco", e.getMessage());  
         return (0);
      }  

   }  
   /**
    * insere no banco de dados.
    * @param endereco endereço a ser inserido no banco de dados.
    */
   public void insere(Endereco endereco){  
      conectar();
      try {
         comando.executeUpdate("INSERT INTO `bd_locarrao`.`tb_endereco` (`rua`, `bairro`, `numero`,`estado`,`cidade`,`complemento`,`cep`) VALUES ('"+endereco.getRua()+"','"+endereco.getBairro()+"','"+endereco.getNumero()+"','"+endereco.getEstado()+"','"+endereco.getCidade()+"','"+endereco.getComplemento()+"','"+endereco.getCep()+"')");
         System.out.println("Inserida!");
      } catch (SQLException e) {  
         imprimeErro("Erro ao inserir Endereco", e.getMessage());  
      } finally {  
         fechar();
      }  
   } 
   /**
    * conecta o banco de dados.
    */
   private void conectar() {  
      try {  
         con = ConFactory.conexao(URL, NOME, SENHA, ConFactory.MYSQL);  
         comando = con.createStatement();  
         System.out.println("Conectado!");  
      } catch (ClassNotFoundException e) {  
         imprimeErro("Erro ao carregar o driver", e.getMessage());  
      } catch (SQLException e) {  
         imprimeErro("Erro ao conectar", e.getMessage());  
      }  
   }  
   /**
    * fecha o banco de dados.
    */
   private void fechar() {  
      try {  
         comando.close();  
         con.close();  
         System.out.println("Conexão Fechada");  
      } catch (SQLException e) {  
         imprimeErro("Erro ao fechar conexão", e.getMessage());  
      }  
   }  
  
   private void imprimeErro(String msg, String msgErro) {  
      JOptionPane.showMessageDialog(null, msg, "Erro crítico", 0);  
      System.err.println(msg);  
      System.out.println(msgErro);  
      System.exit(0);  
   }  
}  

